100 DIM B(100):LPRINT CHR$(27);"E";:'***** Initialize
110 S1$="":S2$="":S4$="":S5$=""
130 NS$="0"
140 WS$="000"
150 NB$="1"
160 WB$="111"
170 S1$=NB$+WS$+NB$+NS$+WB$+NS$+WB$+NS$+NB$+NS$
180 CLS:COLOR 15,0:PRINT SPC(25);BAR$;" LASERBAR ";BAR$:PRINT SPC(29);"by Bill Baines":COLOR 7,0
190 PRINT :PRINT "Utility to print code 3 of 9 bar codes on the H.P. Laserjet printer":PRINT "Note: The Laserjet should be set to respond as LPT1:":PRINT "(use the MODE LPT1:=COMx: command from DOS, x = 1 or 2)"
200 PRINT "All entries must be in UPPER CASE."
400 LOCATE 10,1:INPUT"Message [13 Characters max] OR [enter 'END' to EXIT]";MSG$
410 IF MSG$="END" THEN GOTO 3060
415 IF LEN(MSG$)>13 THEN GOTO 400
420 PRINT"Column to start printing ( 0 -";(80-LEN(MSG$)*2);")";:INPUT K
430 IF K>(80-LEN(MSG$)*2) OR K<0 THEN GOTO 420
440 INPUT"Line # to start printing (0-50) ";LN
450 IF LN<0 OR LN>50 THEN GOTO 440
500 '***** decode message into bar code
510 PRINT"PRINTING ==>";
520 L=LEN(MSG$)
530 FOR X=1 TO L
540 TEST$=MID$(MSG$,X,1)
545 PRINT TEST$;
550 IF TEST$="1" THEN L$=WB$+NS$+NB$+WS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
560 IF TEST$="2" THEN L$=NB$+NS$+WB$+WS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
570 IF TEST$="3" THEN L$=WB$+NS$+WB$+WS$+NB$+NS$+NB$+NS$+NB$ :GOTO 990
580 IF TEST$="4" THEN L$=NB$+NS$+NB$+WS$+WB$+NS$+NB$+NS$+WB$ :GOTO 990
590 IF TEST$="5" THEN L$=WB$+NS$+NB$+WS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
600 IF TEST$="6" THEN L$=NB$+NS$+WB$+WS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
610 IF TEST$="7" THEN L$=NB$+NS$+NB$+WS$+NB$+NS$+WB$+NS$+WB$ :GOTO 990
620 IF TEST$="8" THEN L$=WB$+NS$+NB$+WS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
630 IF TEST$="9" THEN L$=NB$+NS$+WB$+WS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
640 IF TEST$="0" THEN L$=NB$+NS$+NB$+WS$+WB$+NS$+WB$+NS$+NB$ :GOTO 990
650 IF TEST$="A" THEN L$=WB$+NS$+NB$+NS$+NB$+WS$+NB$+NS$+WB$ :GOTO 990
660 IF TEST$="B" THEN L$=NB$+NS$+WB$+NS$+NB$+WS$+NB$+NS$+WB$ :GOTO 990
670 IF TEST$="C" THEN L$=WB$+NS$+WB$+NS$+NB$+WS$+NB$+NS$+NB$ :GOTO 990
680 IF TEST$="D" THEN L$=NB$+NS$+NB$+NS$+WB$+WS$+NB$+NS$+WB$ :GOTO 990
690 IF TEST$="E" THEN L$=WB$+NS$+NB$+NS$+WB$+WS$+NB$+NS$+NB$ :GOTO 990
700 IF TEST$="F" THEN L$=NB$+NS$+WB$+NS$+WB$+WS$+NB$+NS$+NB$ :GOTO 990
710 IF TEST$="G" THEN L$=NB$+NS$+NB$+NS$+NB$+WS$+WB$+NS$+WB$ :GOTO 990
720 IF TEST$="H" THEN L$=WB$+NS$+NB$+NS$+NB$+WS$+WB$+NS$+NB$ :GOTO 990
730 IF TEST$="I" THEN L$=NB$+NS$+WB$+NS$+NB$+WS$+WB$+NS$+NB$ :GOTO 990
740 IF TEST$="J" THEN L$=NB$+NS$+NB$+NS$+WB$+WS$+WB$+NS$+NB$ :GOTO 990
750 IF TEST$="K" THEN L$=WB$+NS$+NB$+NS$+NB$+NS$+NB$+WS$+WB$ :GOTO 990
760 IF TEST$="L" THEN L$=NB$+NS$+WB$+NS$+NB$+NS$+NB$+WS$+WB$ :GOTO 990
770 IF TEST$="M" THEN L$=WB$+NS$+WB$+NS$+NB$+NS$+NB$+WS$+NB$ :GOTO 990
780 IF TEST$="N" THEN L$=NB$+NS$+NB$+NS$+WB$+NS$+NB$+WS$+WB$ :GOTO 990
790 IF TEST$="O" THEN L$=WB$+NS$+NB$+NS$+WB$+NS$+NB$+WS$+NB$ :GOTO 990
800 IF TEST$="P" THEN L$=NB$+NS$+WB$+NS$+WB$+NS$+NB$+WS$+NB$ :GOTO 990
810 IF TEST$="Q" THEN L$=NB$+NS$+NB$+NS$+NB$+NS$+WB$+WS$+WB$ :GOTO 990
820 IF TEST$="R" THEN L$=WB$+NS$+NB$+NS$+NB$+NS$+WB$+WS$+NB$ :GOTO 990
830 IF TEST$="S" THEN L$=NB$+NS$+WB$+NS$+NB$+NS$+WB$+WS$+NB$ :GOTO 990
840 IF TEST$="T" THEN L$=NB$+NS$+NB$+NS$+WB$+NS$+WB$+WS$+NB$ :GOTO 990
850 IF TEST$="U" THEN L$=WB$+WS$+NB$+NS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
860 IF TEST$="V" THEN L$=NB$+WS$+WB$+NS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
870 IF TEST$="W" THEN L$=WB$+WS$+WB$+NS$+NB$+NS$+NB$+NS$+NB$ :GOTO 990
880 IF TEST$="X" THEN L$=NB$+WS$+NB$+NS$+WB$+NS$+NB$+NS$+WB$ :GOTO 990
890 IF TEST$="Y" THEN L$=WB$+WS$+NB$+NS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
900 IF TEST$="Z" THEN L$=NB$+WS$+WB$+NS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
910 IF TEST$="-" THEN L$=NB$+WS$+NB$+NS$+NB$+NS$+WB$+NS$+WB$ :GOTO 990
920 IF TEST$="." THEN L$=WB$+WS$+NB$+NS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
930 IF TEST$=" " THEN L$=NB$+WS$+WB$+NS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
940 IF TEST$="*" THEN L$=NB$+WS$+NB$+NS$+WB$+NS$+WB$+NS$+NB$ :GOTO 990
950 IF TEST$="$" THEN L$=NB$+WS$+NB$+WS$+NB$+WS$+NB$+NS$+NB$ :GOTO 990
960 IF TEST$="/" THEN L$=NB$+WS$+NB$+WS$+NB$+NS$+NB$+WS$+NB$ :GOTO 990
970 IF TEST$="+" THEN L$=NB$+WS$+NB$+NS$+NB$+WS$+NB$+WS$+NB$ :GOTO 990
980 IF TEST$="%" THEN L$=NB$+NS$+NB$+WS$+NB$+WS$+NB$+WS$+NB$ :GOTO 990
985 PRINT :PRINT "INVALID CHARACTER [";TEST$;"] DETECTED IN INPUT! - ABORTED -": GOTO 3060
990 L$=L$+NS$:S2$=S2$+L$:NEXT X
1000 S4$=S1$+S2$+S1$
1010 S=LEN(S4$):IF INT(S/8)<>S/8 THEN S4$="0"+S4$:GOTO 1010
1020 C=S/8 :' FIND OUT HOW MANY BYTES TO SEND TO PRINTER
1030 FOR Y=0 TO C-1
1040 S5$=MID$(S4$,Y*8+1,8)
1050 GOSUB 5000
1060 B(Y+1)=D
1070 NEXT Y
2000 'SEND BYTES B(1)...B(C) TO PRINTER
2040 WIDTH "LPT1:",255:'DISABLE CR/LF
2050 LPRINT CHR$(27);"*t100R";:'SET RESOLUTION TO 100 DPI
2060 K$="&a"+MID$(STR$(K),2,LEN(STR$(K)))+"C":LPRINT CHR$(27);K$;:'PLACE CURSOR AT COL K
2065 LN$="&a"+MID$(STR$(LN),2,LEN(STR$(LN)))+"R":LPRINT CHR$(27);LN$;:'PLACE CURSOR AT LINE LN